// 引入 Nuxt3 的 defineEventHandler 和 readBody 方法，用于处理 API 请求
const { defineEventHandler, readBody, getQuery } = require('h3');
// 引入 MongoDB 连接工具
const { getDb } = require('../db');

// 导出默认的事件处理器
module.exports = defineEventHandler(async (event) => {
  // 获取请求方法（GET、POST、PUT、DELETE）
  const method = event.node.req.method;
  // 获取数据库实例
  const db = await getDb();
  // 获取 partners 集合
  const collection = db.collection('partners');

  // 根据不同的请求方法处理不同的业务逻辑
  if (method === 'GET') {
    // 查询参数（如 id）
    const query = getQuery(event);
    if (query.id) {
      // 查询单个合作伙伴详情
      const item = await collection.findOne({ _id: require('mongodb').ObjectId(query.id) });
      return item;
    } else {
      // 查询所有合作伙伴列表
      const items = await collection.find({}).toArray();
      return items;
    }
  }

  if (method === 'POST') {
    // 新增合作伙伴
    const body = await readBody(event);
    const result = await collection.insertOne(body);
    return { success: true, insertedId: result.insertedId };
  }

  if (method === 'PUT') {
    // 更新合作伙伴
    const body = await readBody(event);
    if (!body._id) {
      return { success: false, message: '缺少合作伙伴ID' };
    }
    const id = body._id;
    delete body._id;
    await collection.updateOne({ _id: require('mongodb').ObjectId(id) }, { $set: body });
    return { success: true };
  }

  if (method === 'DELETE') {
    // 删除合作伙伴
    const query = getQuery(event);
    if (!query.id) {
      return { success: false, message: '缺少合作伙伴ID' };
    }
    await collection.deleteOne({ _id: require('mongodb').ObjectId(query.id) });
    return { success: true };
  }

  // 其他未处理的方法
  return { success: false, message: '不支持的请求方法' };
}); 